package main

import (
	"log"
	"os"
	"os/signal"
	"syscall"

	"hawkeye/config"
	"hawkeye/server"
)

func main() {
	// 加载配置（优先使用YAML，如果不存在则使用JSON）
	cfg, err := config.LoadConfig("config/config.yaml")
	if err != nil {
		log.Fatalf("加载配置失败: %v", err)
	}

	// 创建服务器
	srv := server.NewServer(cfg)

	// 设置信号处理
	sigChan := make(chan os.Signal, 1)
	signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)

	// 启动服务器
	go func() {
		log.Println("启动TCP服务器...")
		if err := srv.Start(); err != nil {
			log.Fatalf("服务器启动失败: %v", err)
		}
	}()

	// 等待终止信号
	<-sigChan
	log.Println("接收到终止信号，正在关闭服务器...")

	// 优雅关闭
	srv.Stop()
	log.Println("服务器已关闭")
}
